﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClassesMetiers;
using Microsoft.VisualBasic;
using GUI.UsersControls;

namespace GUI.Panels.Besoins
{
    public partial class PanelLesProduits : UcPanel
    {
        private Dictionary<int, Produit> _lesProduits;
        private int _idProduitSelectione;

        public PanelLesProduits()
        {
            InitializeComponent();
            _idProduitSelectione = 0;
            titre = "Gérer les Produit";
            indexOnglet = ongletIndex.BESOINS;
        }

        public override void afficher()
        {
            base.afficher();
            mettreAJourAffichage();
        }

        public override void masquer()
        {
            base.masquer();
        }

        public void mettreAJourAffichage()
        {
            _lesProduits = _ControleurClassesMetiers.recupererLesProduits();
            dgvProduits.Rows.Clear();
            foreach (KeyValuePair<int, Produit> uneDonnee in _lesProduits)
            {
                dgvProduits.Rows.Add(uneDonnee.Value.versTableau());
            }
            if (_lesProduits.Count > 0)
                selectionerUnProduit(_lesProduits.Keys.ElementAt(0));

            btnModifier.Enabled = (_lesProduits.Count > 0);
            btnSupprimer.Enabled = (_lesProduits.Count > 0);
        }

        private void selectionerUnProduit(int idProduit)
        {
            _idProduitSelectione = idProduit;
        }

        private void btnRafraichir_Click(object sender, EventArgs e)
        {
            mettreAJourAffichage();
        }

        private void dgvProduits_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1 && e.RowIndex < _lesProduits.Count)
                selectionerUnProduit(int.Parse(dgvProduits[0, e.RowIndex].Value.ToString()));
        }

        private void btnAjouter_Click(object sender, EventArgs e)
        {
            String result = Interaction.InputBox("Nom du Produit ?", "Nom", "", 500, 300);
            if (result.Trim() != "")
            {
                Boolean modificationReussi = _ControleurClassesMetiers.ajouterUnProduit(new Produit(result));
                if (modificationReussi)
                    mettreAJourAffichage();
                else
                    laFormMain.MessageErreur.afficher("Les modifications n'ont pas pu être enregistrées suite a une erreur.", true);
            }
        }

        private void btnModifier_Click(object sender, EventArgs e)
        {
            String result = Interaction.InputBox("Nouveau nom du Produit ?\n (Nom avant modification : " + _lesProduits[_idProduitSelectione].nom + ")", "Nom", _lesProduits[_idProduitSelectione].nom, 500, 300);
            if (result.Trim() != "" && result != _lesProduits[_idProduitSelectione].nom)
            {
                Boolean modificationReussi = _ControleurClassesMetiers.sauvegarderUnProduit(_lesProduits[_idProduitSelectione]);
                if (modificationReussi)
                    mettreAJourAffichage();
                else
                    laFormMain.MessageErreur.afficher("Les modifications n'ont pas pu être enregistrées suite a une erreur.", true);
            }
        }

        private void btnSupprimer_Click(object sender, EventArgs e)
        {
            Boolean modificationReussi = _ControleurClassesMetiers.supprimerUnProduit(_lesProduits[_idProduitSelectione]);
            if (modificationReussi)
                mettreAJourAffichage();
            else
                laFormMain.MessageErreur.afficher("Les modifications n'ont pas pu être enregistrées suite a une erreur.", true);
        }

        private void btnAllerA_Click(object sender, EventArgs e)
        {
            if (_lesProduits.Keys.Contains(_idProduitSelectione))
                laFormMain.afficherLeProduit(_lesProduits[_idProduitSelectione]);
        }
    }
}
